#ifndef DOUBLEPAIR_H
#define DOUBLEPAIR_H

#pragma once

#include <QPair>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <QPointF>
#include <QVector>

typedef QPair<double, double> DoublePair;
typedef QVector<DoublePair> DoublePairs;
typedef QVector<DoublePairs> DoublePairsCollection;
typedef QVector<DoublePairsCollection> DoublePairsCollections;

namespace boostgm = boost::geometry;

typedef boostgm::model::point<double, 2, boostgm::cs::geographic<boostgm::degree>> GeoPoint;
typedef boostgm::model::linestring<GeoPoint> GeoLineString;
typedef boostgm::model::polygon<GeoPoint> GeoPolygon;

typedef boostgm::model::d2::point_xy<double> DPoint;
typedef boostgm::model::linestring<DPoint> DLineString;
typedef boostgm::model::polygon<DPoint> DPolygon;

typedef QVector<QPointF> QPoints_xy;
typedef QVector<QPoints_xy> QPolygon_xy;

#endif